#pragma once
#include "ckRaster.h"
#include <string>
#include <vector>
#include <gdal_priv.h>

namespace ck
{
	namespace data
	{
		class RasterImpl : public Raster
		{
		public:
			RasterImpl();
			virtual ~RasterImpl();

		public:
			virtual	void		SetPath(const char* szPath);
			virtual RESULTCODE	Open();
			virtual bool		IsOpen();
			virtual void		Close();

			virtual z_uint32	GetBandCount();
			virtual RasterBand*	GetBand(z_uint32 i);

		protected:
			void				Cleanup();

		protected:
			std::string		m_strPath;
			GDALDataset*	m_poDataset;

			std::vector<data::RasterBand*>	m_bands;
		};

	}
}

